package Song.Han.demo01;
/*
Throw关键字
    作用：
        在指定方法中抛出指定异常
    使用格式：
        throw new xxxException("异常产生原因");
    注意：
        1.throw关键字必须写在方法内部
        2.throw关键字后面new的对象必须是Exception或是Exception的子类对象
        3.throw关键字抛出指定的异常，我们就必须处理这个异常
            throw关键字后面创建的是RuntimeException或RuntimeException的子类对象，我们可以不处理交给JVM处理
            throw关键字后面创建的是编译异常，我们就必须处理（throw或者tre...catch）
*/
public class Demo02Throw {
    public static void main(String[] args) {
/*
        int[] arr1 = null;
        int e1 = getElement(arr1,0);
*/

/*
        int[] arr2 = new int[2];
        int e2 = getElement(arr2,3);
*/

    }

    public static int getElement(int[] arr,int index){
        //参数合法性判断
        if (arr == null){
            throw new NullPointerException("传递的数组值为null");
        }
        if (index<0 || index>arr.length-1){
            throw new ArrayIndexOutOfBoundsException("超出数组索引范围");
        }
        int ele = arr[index];
        return ele;
    }
}
